package com.example.demo5tcp2;

import java.io.DataInputStream;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * 目标：实现TCP通信下多发多收：服务端开发。
 */
public class ServerDemo2 {
    public static void main(String[] args) throws Exception {
        System.out.println("服务端启动了...");
        // 1.创建一个服务端ServerSocket对象，绑定监听端口
        ServerSocket serverSocket = new ServerSocket(9999);

        // 2.调用accept方法，阻塞等待客户端连接，一旦有客户端链接会返回一个Socket对象
        Socket socket = serverSocket.accept();

        // 3.获取输入流，读取客户端发送的数据
        InputStream is = socket.getInputStream();

        // 4.把字节输入流包装成特殊数据输入流
        DataInputStream dis = new DataInputStream(is);

        // 5.读取数据
        while (true) {
            String msg = dis.readUTF();
            System.out.println("收到的客户端msg=" + msg);

            // 6.获取客户端的ip和端口
            System.out.println("客户端的ip=" + socket.getInetAddress().getHostAddress());
            System.out.println("客户端的端口=" + socket.getPort());
            System.out.println("-----------------------------------");
        }
    }
}
